package com.atxiaodei.nio.nioday01;

import org.junit.Test;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Stream;

/**
 * @author wangmeng
 * @date 2020/9/12
 **/
public class StreamApi2 {

    @Test
    public void test1(){



        // 将数组转换为管道流 使用Stream.of()或者Arrays.stream()方法，将数组转换为管道流
        String arr[]={"Monkey", "Lion", "Giraffe", "Lemur"};

        // ①
        Stream<String> stream = Arrays.stream(arr);
        // ②
        Stream<String> arr1 = Stream.of(arr);

        stream.forEach(System.out::println);
        System.out.println("------------------------------------------------");
        arr1.forEach(System.out::println);

        // 将list集合类对象转换为管道流
        List<String> list = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur");

        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return 0;
            }
        });




     /*   StringBuilder str=new StringBuilder("lvshqi");

        list.forEach(x->str.append(x+","));

        System.out.println(str.toString().substring(0,str.length()-1));*/

        list.stream();
        System.out.println("------------------------------------------------");
        // 将set集合类对象转换为管道流
        HashSet<String> strings = new HashSet<>(list);
        strings.stream()
        .forEach(System.out::println);
        System.out.println("------------------------------------------------");
        LinkedList<String> strings1 = new LinkedList<>(list);
        strings1.stream()
                .forEach(System.out::println);
        System.out.println("------------------------------------------------");

    }
    @Test
    public void test2(){
        // 将文本文件转换为管道流
        /**
         * 通过Files.lines方法将文本文件转换为管道流，下图中的Paths.get()方法作用就是获取文件，是Java NIO的API！
         *
         * 也就是说：我们可以很方便的使用Java Stream加载文本文件，然后逐行的对文件内容进行处理。
         */
        try {
            Stream<String> lines = Files.lines(Paths.get("1.txt"));
            lines.forEach(System.out::println);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
